/*
 * G711Encoder.h
 *
 *  Created on: 2016-8-24
 *      Author: zhengboyuan
 */

#ifndef G711ENCODER_H_
#define G711ENCODER_H_


////////////////////////////////////////////////////////////////////////////

#ifdef WIN32

    #ifndef NOMINMAX
    #define NOMINMAX
    #endif //NOMINMAX

	#include <Windows.h>
#else

#endif //WIN32


////////////////////////////////////////////////////////////////////////////

#ifdef _MSC_VER
    typedef signed char     int8_t;
    typedef unsigned char   uint8_t;
    typedef short           int16_t;
    typedef unsigned short  uint16_t;
    typedef int             int32_t;
    typedef unsigned        uint32_t;
    typedef long long       int64_t;
    typedef unsigned long long   uint64_t;
#else
    #include <stdint.h>
    typedef void*   HANDLE;
#endif //_MSC_VER


///////////////////////////////////////////////////////////////////
#ifdef WIN32
    #ifndef DLLEXPORT
    #define DLLEXPORT __declspec(dllexport)
    #endif //DLLEXPORT
#else
	#ifndef DLLEXPORT
    #define DLLEXPORT __attribute__ ((visibility ("default")))
	#endif //DLLEXPORT
#endif //WIN32

///////////////////////////////////////////////////////////////////

#include "MFormat.h"


#ifdef __cplusplus
extern "C"
{
#endif

/////////////////////////////////////////////////////////////////////////////


typedef int		g711_t;

/**
 * 初始化.
 * @return 0 表示成功.
 */
DLLEXPORT int g711_init();

/**
 * 反初始化.
 * @return
 */
DLLEXPORT int g711_quit();


/**
 * 打开发送通道.
 * @param handle	句柄.
 * @param codec		编码
 * @param freq		输入采样率
 * @param channels		输入通道数
 * @return 0 表示成功.
 */
DLLEXPORT int g711_open(g711_t* handle, int codec, int freq, int channels);

/**
 * 关闭通道.
 * @param handle 通道句柄.
 */
DLLEXPORT void g711_close(g711_t handle);


/**
 * 添加发送目标.
 * @param handle 通道句柄.
 * @param ip		地址.
 * @param port		端口.
 * @return	0 表示成功.
 */
DLLEXPORT int g711_encode(g711_t handle, uint8_t* data, int length, int64_t pts, MPacket* pkt);


/////////////////////////////////////////////////////////////////////////////

#ifdef __cplusplus
}
#endif


#endif /* G711ENCODER_H_ */
